home *** CD-ROM | disk | FTP | other *** search
- /* $Revision Header *** Header built automatically - do not edit! ***********
- *
- * (C) Copyright 1992 by Torsten Jürgeleit
- *
- * Name .....: screen.c
- * Created ..: Friday 02-Oct-92 10:31:18
- * Revision .: 1
- *
- * Date Author Comment
- * ========= ==================== ====================
- * 02-Oct-92 Michael Bjerking New realese, better Screen/Window editor
- * 02-Oct-92 Michael Bjerking Created this file!
- *
- * $Revision Header ********************************************************/
-
- /* Includes */
-
- #include "includes.h"
- #include "defines.h"
- #include "imports.h"
- #include "protos.h"
-
- /* Screen data */
-
- struct NewScreen editor_new_screen =
- {
- 0, /* LetfEdge (not used) */
- 0, /* TopEdge */
- 320, /* Width (320=Low, 640=High resolution) */
- 200, /* Height (200=non -> 400=interlace) */
- 2, /* Depth (1-6 => 2-64 colours) */
- 0, /* DetailPen */
- 1, /* BlockPen */
- 0, /* ViewModes - flags: HIRES, INTERLACE,
- SPRITES, DUALPF, HAM */
- CUSTOMSCREEN, /* Type (CUSTOMSCREEN or CUSTOMBITMAP) */
- NULL, /* Font (NULL or struct Textattr) */
- (UBYTE *) & editor_screen_title[0], /* DefaultTitle (NULL or NULL terminating string)*/
- NULL, /* Gadgets (pointer to first gadget) */
- NULL /* CustomBitap (pointer to BitMap) */
- };
- USHORT editor_screen_type = EDITOR_SCREEN_TYPE_WBENCH;
-
- /* Data for fonts */
-
- STATIC struct TextAttr screen_text_attr[]=
- {
- {
- (STRPTR) "topaz.font", 8, FS_NORMAL, FPF_ROMFONT
- }
- };
-
- /* Defines and data for gadgets */
-
- #define SCREEN_GADGET_LEFTEDGE 0
- #define SCREEN_GADGET_TOPEDGE 1
- #define SCREEN_GADGET_WIDTH 2
- #define SCREEN_GADGET_HEIGHT 3
- #define SCREEN_GADGET_DEPTH 4
- #define SCREEN_GADGET_DETAILPEN 5
- #define SCREEN_GADGET_BLOCKPEN 6
- #define SCREEN_GADGET_INTERLACE 7
- #define SCREEN_GADGET_SPRITES 8
- #define SCREEN_GADGET_DUALPF 9
- #define SCREEN_GADGET_HIRES 10
- #define SCREEN_GADGET_HAM 11
- #define SCREEN_GADGET_TITLE 12
- #define SCREEN_GADGET_SCREENTYPE 13
- #define SCREEN_GADGET_OK 14
- #define SCREEN_GADGET_CANCEL 15
-
- STATIC BYTE *screen_gadget14_text_array[]=
- {
- "WBENCHSCREEN",
- "CUSTOMSCREEN",
- "CUSTOMBITMAP",
- NULL
- };
- STATIC struct GadgetData screen_gadget_data[]=
- {
- {
- 5, 65, 296, 4, 71, 14,
- "LeftEdge ", &screen_text_attr[0],
- {10, 0, (VOID *) 0}
- },
- {
- 5, 64, 296, 19, 71, 14,
- "TopEdge ", &screen_text_attr[0],
- {10, 0, (VOID *) 0}
- },
- {
- 5, 64, 296, 34, 71, 14,
- "Width ", &screen_text_attr[0],
- {10, 0, (VOID *) 320}
- },
- {
- 5, 64, 296, 49, 71, 14,
- "Height ", &screen_text_attr[0],
- {10, 0, (VOID *) 200}
- },
- {
- 9, 64, 446, 80, 51, 12,
- "Depth", &screen_text_attr[0],
- {1, 6, (VOID *) 2}
- },
- {
- 5, 64, 296, 64, 71, 14,
- "DetailPen", &screen_text_attr[0],
- {10, 0, (VOID *) 0}
- },
- {
- 5, 64, 296, 79, 71, 14,
- "BlockPen ", &screen_text_attr[0],
- {10, 0, (VOID *) 1}
- },
- {
- 2, 64, 476, 19, 21, 11,
- "INTERLACE", &screen_text_attr[0],
- {0, 1, (VOID *) 0}
- },
- {
- 2, 64, 476, 34, 21, 11,
- "SPRITES ", &screen_text_attr[0],
- {0, 1, (VOID *) 0}
- },
- {
- 2, 64, 476, 49, 21, 11,
- "DUALPF ", &screen_text_attr[0],
- {0, 1, (VOID *) 0}
- },
- {
- 2, 64, 476, 4, 21, 11,
- "HIRES ", &screen_text_attr[0],
- {0, 1, (VOID *) 0}
- },
- {
- 2, 64, 476, 64, 21, 11,
- "HAM ", &screen_text_attr[0],
- {0, 1, (VOID *) 0}
- },
- {
- 4, 256, 36, 75, 110, 14,
- "DefaultTitle", &screen_text_attr[0],
- {20, 0, "Screen"}
- },
- {
- 3, 64, 21, 19, 138, 37,
- "Screen Type:", &screen_text_attr[0],
- {1, 0, &screen_gadget14_text_array[0]}
- },
- {
- 1, 16, 50, 95, 110, 15,
- "_Ok", &screen_text_attr[0],
- {0, 0, (VOID *) 0}
- },
- {
- 1, 16, 340, 95, 110, 15,
- "_Cancel", &screen_text_attr[0],
- {0, 0, (VOID *) 0}
- },
- {
- INTUISUP_DATA_END
- }
- };
-
- SHORT
- change_project_screen(VOID)
- {
- struct GadgetData *gd = &screen_gadget_data[0];
- APTR gl;
- SHORT status;
-
- /* Init gadgets with current values */
- (gd + SCREEN_GADGET_LEFTEDGE)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.LeftEdge;
- (gd + SCREEN_GADGET_TOPEDGE)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.TopEdge;
- (gd + SCREEN_GADGET_WIDTH)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.Width;
- (gd + SCREEN_GADGET_HEIGHT)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.Height;
- (gd + SCREEN_GADGET_DETAILPEN)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.DetailPen;
- (gd + SCREEN_GADGET_BLOCKPEN)->gd_SpecialData.gd_InputData.gd_InputDefault = (VOID *) editor_new_screen.BlockPen;
- (gd + SCREEN_GADGET_TITLE)->gd_SpecialData.gd_InputData.gd_InputDefault = (BYTE *) editor_new_screen.DefaultTitle;
-
- (gd + SCREEN_GADGET_HIRES)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (ULONG) (editor_new_screen.ViewModes & HIRES ? 1 : 0);
- (gd + SCREEN_GADGET_INTERLACE)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (ULONG) (editor_new_screen.ViewModes & INTERLACE ? 1 : 0);
- (gd + SCREEN_GADGET_SPRITES)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (ULONG) (editor_new_screen.ViewModes & SPRITES ? 1 : 0);
- (gd + SCREEN_GADGET_DUALPF)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (ULONG) (editor_new_screen.ViewModes & DUALPF ? 1 : 0);
- (gd + SCREEN_GADGET_HAM)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (ULONG) (editor_new_screen.ViewModes & HAM ? 1 : 0);
-
- (gd + SCREEN_GADGET_SCREENTYPE)->gd_SpecialData.gd_MXData.gd_MXActiveEntry = (ULONG) editor_screen_type;
-
- /* Print title and display gadgets */
- IClearWindow(eri, ewin, 0, 0, EDITOR_WINDOW_WIDTH, EDITOR_WINDOW_HEIGHT, 0);
-
- if (!(gl = ICreateGadgets(eri, &screen_gadget_data[0], 0, 0, NULL)))
- status = EDITOR_ERROR_OUT_OF_MEM;
- else
- {
- /* Init IDCMPFlag and Flag list */
-
- IDisplayGadgets(ewin, gl);
- status = change_project_screen_action(gl);
- IRemoveGadgets(gl);
- IFreeGadgets(gl);
- }
-
- return (status);
- }
-
- STATIC SHORT
- change_project_screen_action(APTR gl)
- {
- struct MsgPort *up = ewin->UserPort;
- BOOL keepon = TRUE;
-
- do
- {
- struct IntuiMessage *msg;
-
- WaitPort(up);
- while (msg = IGetMsg(up))
- {
- ULONG Class = msg->Class;
- USHORT Code = msg->Code;
- LONG IAddress = (LONG) msg->IAddress;
-
- switch (Class)
- {
- case CLOSEWINDOW:
- keepon = FALSE;
- break;
-
- case ISUP_ID:
- switch (Code)
- {
- case SCREEN_GADGET_LEFTEDGE:
- printf("SCREEN_GADGET_LEFTEDGE: %ld\n", IAddress);
- break;
-
- case SCREEN_GADGET_TOPEDGE:
- printf("SCREEN_GADGET_TOPEDGE: %ld\n", IAddress);
- editor_new_screen.TopEdge = (SHORT) IAddress;
- break;
-
- case SCREEN_GADGET_WIDTH:
- printf("SCREEN_GADGET_WIDTH: %ld\n", IAddress);
- editor_new_screen.Width = (SHORT) IAddress;
- break;
-
- case SCREEN_GADGET_HEIGHT:
- printf("SCREEN_GADGET_HEIGHT: %ld\n", IAddress);
- editor_new_screen.Height = (SHORT) IAddress;
- break;
-
- case SCREEN_GADGET_DEPTH:
- printf("SCREEN_GADGET_DEPTH: %ld\n", IAddress);
- editor_new_screen.Depth = (SHORT) IAddress;
- break;
-
- case SCREEN_GADGET_DETAILPEN:
- printf("SCREEN_GADGET_DETAILPEN: %ld\n", IAddress);
- editor_new_screen.DetailPen = (UBYTE) IAddress;
- break;
-
- case SCREEN_GADGET_BLOCKPEN:
- printf("SCREEN_GADGET_BLOCKPEN: %ld\n", IAddress);
- editor_new_screen.BlockPen = (UBYTE) IAddress;
- break;
-
- case SCREEN_GADGET_INTERLACE:
- printf("SCREEN_GADGET_INTERLACE: %ld\n", IAddress);
- if (IAddress)
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes | INTERLACE;
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes ^ INTERLACE;
- break;
-
- case SCREEN_GADGET_SPRITES:
- printf("SCREEN_GADGET_SPRITES: %ld\n", IAddress);
- if (IAddress)
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes | SPRITES;
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes ^ SPRITES;
- break;
-
- case SCREEN_GADGET_DUALPF:
- printf("SCREEN_GADGET_DUALPF: %ld\n", IAddress);
- if (IAddress)
- {
- if ((editor_new_screen.ViewModes & HIRES) || (editor_new_screen.ViewModes & HAM))
- {
- printf("Hires, Ham and Dualpf not allowed at the same time\n");
- ISetGadgetAttributes(gl, SCREEN_GADGET_DUALPF, 0L, 0L, 0L, 0L, (VOID *) 0);
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes | DUALPF;
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes ^ DUALPF;
- break;
-
- case SCREEN_GADGET_HIRES:
- printf("SCREEN_GADGET_HIRES: %ld\n", IAddress);
- if (IAddress)
- {
- if ((editor_new_screen.ViewModes & DUALPF) || (editor_new_screen.ViewModes & HAM))
- {
- printf("Hires, Ham and Dualpf not allowed at the same time\n");
- ISetGadgetAttributes(gl, SCREEN_GADGET_HIRES, 0L, 0L, 0L, 0L, (VOID *) 0);
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes | HIRES;
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes ^ HIRES;
- break;
-
- case SCREEN_GADGET_HAM:
- printf("SCREEN_GADGET_HAM: %ld\n", IAddress);
- if (IAddress)
- {
- if ((editor_new_screen.ViewModes & HIRES) || (editor_new_screen.ViewModes & DUALPF))
- {
- printf("Hires, Ham and Dualpf not allowed at the same time\n");
- ISetGadgetAttributes(gl, SCREEN_GADGET_HAM, 0L, 0L, 0L, 0L, (VOID *) 0);
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes | HAM;
- }
- else
- editor_new_screen.ViewModes = (USHORT) editor_new_screen.ViewModes ^ HAM;
- break;
-
- case SCREEN_GADGET_TITLE:
- printf("SCREEN_GADGET_TITLE: %s\n", IAddress);
- sprintf((BYTE *) editor_new_screen.DefaultTitle, "%s", IAddress);
- break;
-
- case SCREEN_GADGET_SCREENTYPE:
- printf("SCREEN_GADGET_SCREENTYPE: %ld\n", IAddress);
- switch ((USHORT) IAddress)
- {
- case EDITOR_SCREEN_TYPE_WBENCH:
- editor_screen_type = EDITOR_SCREEN_TYPE_WBENCH;
- break;
- case EDITOR_SCREEN_TYPE_CUSTOM:
- editor_screen_type = EDITOR_SCREEN_TYPE_CUSTOM;
- break;
- case EDITOR_SCREEN_TYPE_BITMAP:
- editor_screen_type = EDITOR_SCREEN_TYPE_BITMAP;
- break;
- }
- break;
-
- case SCREEN_GADGET_OK:
- /*
- if( (screen=(struct Screen*)OpenScreen(&editor_new_screen))==NULL)
- printf("Couldn't open screen\n");
- else
- {
- Delay(200);
- CloseScreen(screen);
- }
- */
- keepon = FALSE;
- break;
-
- case SCREEN_GADGET_CANCEL:
- keepon = FALSE;
- break;
- }
- }
-
- IReplyMsg(msg);
- }
- }
- while (keepon == TRUE);
-
- return EDITOR_STATUS_NORMAL;
- }
-